using System;

namespace lucere.index
{
    public interface IFieldInfo : ICloneable
    {
        string Name { get; set; }
        bool IsIndexed { get; set; }
        int Number { get; set; }

        /// <summary>
        /// true if term vector for this field should be stored
        /// </summary>
        bool StoreTermVector { get; set; }
        bool StoreOffsetWithTermVector { get; set; } 
        bool StorePositionWithTermVector { get; set; }

        /// <summary>
        /// omit norms associated with indexed fields  
        /// </summary>
        bool OmitNorms { get; set; }
        bool OmitTermFreqAndPositions { get; set; } 

        /// <summary>
        /// whether this field stores payloads together with term positions
        /// </summary>
        bool StorePayloads { get; set; }

        void Update(bool isIndexed, bool storeTermVector, bool storePositionWithTermVector, bool storeOffsetWithTermVector, bool omitNorms, bool storePayloads, bool omitTermFreqAndPositions);

    }
}